home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple Developer Connection Student Program
/
ADC Tools Sampler CD Disk 3 1999.iso
/
Cool Demos, SDKs, & Tools
/
Demos⁄Tools⁄Offers
/
Eiffel for CW beta 3
/
Example Projects
/
EiffelText
/
ThreeDMetafile.h
< prev
next >
Wrap
Text File
|
1999-02-21
|
10KB
|
240 lines
/*
File: ThreeDMetafile.h
Contains: 3D viewer support for SimpleText
Version: GX 1.2 or later
** Copyright 1994-1996 Apple Computer. All rights reserved.
**
** You may incorporate this sample code into your applications without
** restriction, though the sample code has been provided "AS IS" and the
** responsibility for its operation is 100% yours. However, what you are
** not permitted to do is to redistribute the source as "DSC Sample Code"
** after having made changes. If you're going to re-distribute the source,
** we require that you make it clear in the source that the code was
** descended from Apple Sample Code, but that you've made changes.
** YES - THIS HAS BEEN CHANGED FOR EIFFEL TEXT.
*/
#include "EiffelText.h"
#define kThreeDWindowID kThreeDBaseID
#ifndef REZ
typedef long ViewerObject;
struct ThreeDDataRecord
{
WindowDataRecord w;
ViewerObject viewerObject;
};
typedef struct ThreeDDataRecord ThreeDDataRecord, *ThreeDDataPtr;
enum {
kQ3ViewerShowBadge = 1<<0,
kQ3ViewerActive = 1<<1,
kQ3ViewerControllerVisible = 1<<2,
kQ3ViewerDrawFrame = 1<<3,
kQ3ViewerDraggingOff = 1<<4,
kQ3ViewerButtonCamera = 1<<5,
kQ3ViewerButtonTruck = 1<<6,
kQ3ViewerButtonOrbit = 1<<7,
kQ3ViewerButtonZoom = 1<<8,
kQ3ViewerButtonDolly = 1<<9,
kQ3ViewerDefault = (
kQ3ViewerActive | kQ3ViewerControllerVisible |
kQ3ViewerButtonCamera | kQ3ViewerButtonTruck |
kQ3ViewerButtonOrbit | kQ3ViewerButtonDolly )
};
enum {
uppViewerLibNewProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Ptr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CGrafPtr)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
uppViewerLibDisposeProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr))),
uppViewerLibUseFileProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
uppViewerLibUseDataProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
uppViewerLibWriteFileProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
uppViewerLibWriteDataProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void**))),
uppViewerLibDrawProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibGetPictProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(PicHandle)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibGetButtonRectProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
uppViewerLibGetDimensionProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long*))),
uppViewerLibSetFlagsProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long))),
uppViewerLibGetFlagsProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibSetBoundsProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
uppViewerLibGetBoundsProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
uppViewerLibSetPortProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(CGrafPtr))),
uppViewerLibGetPortProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(CGrafPtr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibEventProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))),
uppViewerLibAdjustCursorProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Point*))),
uppViewerLibGetStateProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibClearProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibCutProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibCopyProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
uppViewerLibPasteProcInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
};
// Proc pointer typedefs
typedef ViewerObject (*ViewerLib_NewType) (CGrafPtr port, Rect *rect, unsigned long flags);
typedef OSErr (*ViewerLib_DisposeType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_UseFileType) (ViewerObject theViewer, long refNum);
typedef OSErr (*ViewerLib_UseDataType) (ViewerObject theViewer, void *data, long size);
typedef OSErr (*ViewerLib_WriteFileType) (ViewerObject theViewer, long refNum);
typedef unsigned long (*ViewerLib_WriteDataType) (ViewerObject theViewer, void **data);
typedef OSErr (*ViewerLib_DrawType) (ViewerObject theViewer);
typedef PicHandle (*ViewerLib_GetPictType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_GetButtonRectType) (ViewerObject theViewer, unsigned long button, Rect *rect);
typedef OSErr (*ViewerLib_GetDimensionType) (ViewerObject theViewer, long *width, long* height);
typedef OSErr (*ViewerLib_SetFlagsType) (ViewerObject theViewer, unsigned long flags);
typedef unsigned long (*ViewerLib_GetFlagsType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_SetBoundsType) (ViewerObject theViewer, Rect *bounds);
typedef OSErr (*ViewerLib_GetBoundsType) (ViewerObject theViewer, Rect *bounds);
typedef OSErr (*ViewerLib_SetPortType) (ViewerObject theViewer, CGrafPtr port);
typedef CGrafPtr (*ViewerLib_GetPortType) (ViewerObject theViewer);
typedef Boolean (*ViewerLib_EventType) (ViewerObject theViewer, EventRecord *evt);
typedef Boolean (*ViewerLib_AdjustCursorType) (ViewerObject theViewer, Point *pt);
typedef unsigned long (*ViewerLib_GetStateType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_ClearType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_CutType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_CopyType) (ViewerObject theViewer);
typedef OSErr (*ViewerLib_PasteType) (ViewerObject theViewer);
typedef struct
{
ProcInfoType info;
void *entry;
} GlobalEntry;
// Macro calls
#define ViewerLib_New(A,B,C) (*(ViewerLib_NewType)(gProcPointers[0].entry)) (A, B, C)
#define ViewerLib_Dispose(A) (*(ViewerLib_DisposeType)(gProcPointers[1].entry)) (A)
#define ViewerLib_UseFile(A,B) (*(ViewerLib_UseFileType)(gProcPointers[2].entry)) (A, B)
#define ViewerLib_UseData(A,B,C) (*(ViewerLib_UseDataType)(gProcPointers[3].entry)) (A, B, C)
#define ViewerLib_WriteFile(A,B) (*(ViewerLib_WriteFileType)(gProcPointers[4].entry)) (A, B)
#define ViewerLib_WriteData(A,B) (*(ViewerLib_WriteDataType)(gProcPointers[5].entry)) (A, B)
#define ViewerLib_Draw(A) (*(ViewerLib_DrawType)(gProcPointers[6].entry)) (A)
#define ViewerLib_GetPict(A) (*(ViewerLib_GetPictType)(gProcPointers[7].entry)) (A)
#define ViewerLib_GetButtonRect(A,B,C) (*(ViewerLib_GetButtonRectType)(gProcPointers[8].entry)) (A,B,C)
#define ViewerLib_GetDimension(A,B,C) (*(ViewerLib_GetDimensionType)(gProcPointers[9].entry)) (A,B,C)
#define ViewerLib_SetFlags(A,B) (*(ViewerLib_SetFlagsType)(gProcPointers[10].entry)) (A, B)
#define ViewerLib_GetFlags(A) (*(ViewerLib_GetFlagsType)(gProcPointers[11].entry)) (A)
#define ViewerLib_SetBounds(A,B) (*(ViewerLib_SetBoundsType)(gProcPointers[12].entry)) (A, B)
#define ViewerLib_GetBounds(A,B) (*(ViewerLib_GetBoundsType)(gProcPointers[13].entry)) (A, B)
#define ViewerLib_SetPort(A,B) (*(ViewerLib_SetPortType)(gProcPointers[14].entry)) (A, B)
#define ViewerLib_GetPort(A) (*(ViewerLib_GetPortType)(gProcPointers[15].entry)) (A)
#define ViewerLib_Event(A,B) (*(ViewerLib_EventType)(gProcPointers[16].entry)) (A, B)
#define ViewerLib_AdjustCursor(A,B) (*(ViewerLib_AdjustCursorType)(gProcPointers[17].entry)) (A, B)
#define ViewerLib_GetState(A) (*(ViewerLib_GetStateType)(gProcPointers[18].entry)) (A)
#define ViewerLib_Clear(A) (*(ViewerLib_ClearType)(gProcPointers[19].entry)) (A)
#define ViewerLib_Cut(A) (*(ViewerLib_CutType)(gProcPointers[20].entry)) (A)
#define ViewerLib_Copy(A) (*(ViewerLib_CopyType)(gProcPointers[21].entry)) (A)
#define ViewerLib_Paste(A) (*(ViewerLib_PasteType)(gProcPointers[22].entry)) (A)
#endif